package LambdaLearn.五道练习题;

import java.util.Arrays;

public class TeammateTest {
    public static void main(String[] args) {
        //题目:定义数组并存储一些队友对象，利用Arrays中的sort方法进行排序
        /*
        要求1：属性有姓名、年龄、身高。
        要求2：按照年龄的大小进行排序，年龄一样，按照身高排序，身高一样按照姓名的字母进行排序。
        (姓名中不要有中文或特殊字符，会涉及到后面的知识)
         */
        //1.创建三个队友对象
        Teammate tea1=new Teammate("lvbu",32,2.34);
        Teammate tea2=new Teammate("machao",46,1.80);
        Teammate tea3=new Teammate("zuoci",102,1.75);
        Teammate tea4=new Teammate("simayi",46,1.75);
        Teammate tea5=new Teammate("test",46,1.75);

        //2.定义数组存储队友的对象
        Teammate[] arr={tea1,tea2,tea3,tea4};

        //3.利用Arrays中的sort方法进行排序
        //匿名内部类形式
//        Arrays.sort(arr, new Comparator<Teammate>() {
//            @Override
//            public int compare(Teammate o1, Teammate o2) {
//                //按照年龄的大小进行排序
//                double temp = o1.getAge() - o2.getAge();
//                //年龄一样,按照身高排序
//                temp=temp==0?o1.getHeight()-o2.getHeight():temp;
//                //身高一样,按照姓名的字母进行排序
//                temp=temp==0?o1.getName().compareTo(o2.getName()):temp;
//
//                if (temp>0){
//                    return 1;
//                }else if(temp<0){
//                    return -1;
//                }else{
//                    return 0;
//                }
//            }
//        });
        //利用lanbd表达式
        //格式()->{}
        Arrays.sort(arr, ( o1,  o2)-> {
                //按照年龄的大小进行排序
                double temp = o1.getAge() - o2.getAge();
                //年龄一样,按照身高排序
                temp=temp==0?o1.getHeight()-o2.getHeight():temp;
                //身高一样,按照姓名的字母进行排序
                temp=temp==0?o1.getName().compareTo(o2.getName()):temp;

                if (temp>0){
                    return 1;
                }else if(temp<0){
                    return -1;
                }else{
                    return 0;
                }
            }
        );
        //将数组的内容打印出来
        System.out.println(Arrays.toString(arr));
    }
}
